package com.inspur.edp.common.expr.visitor.parameter;

import com.inspur.edp.common.expr.ast.ASTContext;
import com.inspur.edp.common.expr.ast.CompileUnitParser;
import com.inspur.edp.common.expr.parser.ExpressAstParser;
import com.inspur.edp.common.expr.visitor.JavaVisitor;
import com.inspur.edp.common.type.Method;
import com.inspur.edp.common.type.TypeRefer;

import java.util.ArrayList;
import java.util.List;


/**
 * @author lizhaorui
 * @description TODO
 * @date 2024/8/17 16:34
 */
public class ParameterVisitManager {

    public static Object visitParameter(JavaVisitor visitor,
                                        Method method,
                                        CompileUnitParser.ParameterContext parameterContext,
                                        int index) {
        return visitor.visitParameter(parameterContext);
    }

    public static List<TypeRefer> getParameterTypes(ASTContext visitor, CompileUnitParser.ParametersContext parametersContext) {
        List<TypeRefer> parameterTypes = null;
        if (parametersContext != null && parametersContext.parameter() != null) {
            parameterTypes = new ArrayList<>();
            for (CompileUnitParser.ParameterContext parameterContext : parametersContext.parameter()) {
                CompileUnitParser.ExpressContext expressContext = parameterContext.express();
                TypeRefer parameterType = ExpressAstParser.getOriginalType(expressContext, visitor);
                parameterTypes.add(parameterType);
            }
        }
        return parameterTypes;
    }

}
